/*!
    \copyright  Copyright (c) 2024 Qualcomm Technologies International, Ltd.
                All Rights Reserved.
                Qualcomm Technologies International, Ltd. Confidential and Proprietary.
    \file
    \defgroup   channel_mixing Stereo Audio Channel Mixing
    \ingroup    audio_domain
    \brief      This module is used to configure the down-mixing or channel selection when converting stereo to mono audio.
 
*/

#ifndef CHANNEL_MIXING_H_
#define CHANNEL_MIXING_H_

#include <csrtypes.h>
#include <audio_lea_types.h>

/*!@{*/

/*! \brief Controls channel selection option to use in the mixer. It can select EITHER the mono channel assigned to the device (i.e. either Left or Right) OR a down-mix of both stereo channels.
    \param stereo_down_mix When TRUE a stereo down-mix shall be performed, otherwise the mono channel assigned to the device will be selected.
 */
void ChannelMixing_SetStereoDownMix(bool stereo_down_mix);

/*! \brief Discover the current state of stereo down-mix.
    \return TRUE when stereo down-mix is enabled, otherwise FALSE.
 */
bool ChannelMixing_IsStereoDownMixEnabled(void);

/*! \brief Select left/right channel to be rendred from inputs of Mixer.
    \param channel_mask audio channel type to render, see \ref appKymeraLeAudioChannelType

    \return TRUE if channel selected successfully, otherwise FALSE.
 */
bool ChannelMixing_LeSetIsoChannelToRender(appKymeraLeAudioChannelType channel_mask);

/*!@}*/

#endif /* CHANNEL_MIXING_H_ */
